package com.example.auth.dto;

import java.io.Serializable;

/**
 * Data Transfer Object for student basic information
 */
public class StudentDTO implements Serializable {
    private Long id; // User ID
    private String name; // Student name (using real name or username)
    private String studentId; // Student ID (temporarily consistent with username)
    private String className; // Class name
    private String email; // Email
    private String phone; // Phone
    private String status; // Status (active/inactive)
    private String lastLogin; // Last login time
    private int progress; // Overall learning progress (0-100)
    private Long supervisorId; // Supervisor ID

    public StudentDTO() {
    }

    // Primary constructor
    public StudentDTO(Long id, String name, String studentId, String className,
                      String email, String phone, String status, String lastLogin, int progress, Long supervisorId) {
        this.id = id;
        this.name = name;
        this.studentId = studentId;
        this.className = className;
        this.email = email;
        this.phone = phone;
        this.status = status;
        this.lastLogin = lastLogin;
        this.progress = progress;
        this.supervisorId = supervisorId;
    }
    
    // Constructor without supervisorId for backward compatibility
    public StudentDTO(Long id, String name, String studentId, String className,
                      String email, String phone, String status, String lastLogin, int progress) {
        this(id, name, studentId, className, email, phone, status, lastLogin, progress, null);
    }

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStudentId() {
        return studentId;
    }

    public void setStudentId(String studentId) {
        this.studentId = studentId;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getLastLogin() {
        return lastLogin;
    }

    public void setLastLogin(String lastLogin) {
        this.lastLogin = lastLogin;
    }

    public int getProgress() {
        return progress;
    }

    public void setProgress(int progress) {
        this.progress = progress;
    }
    
    public Long getSupervisorId() {
        return supervisorId;
    }
    
    public void setSupervisorId(Long supervisorId) {
        this.supervisorId = supervisorId;
    }
}